// 该函数使用sigaction函数来实现与exam801signal.c中的功能，
// 需要注意的是其中使用了和信号集相关的函数sigemptyset来清空信号集中的所有信号
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>

void signalDeal(int sig, siginfo_t *info, void *t){
	
	// 判断信号的类型
	if(sig == SIGINT){
		printf("  Ctrl + C 被按下!\n");
	}else if(sig == SIGQUIT){
		printf("  Ctrl + \ 被按下!\n");
	}else{
		printf("  其它信号被按下!\n");
	}
}

int main(int argc, char *argv){
	
	// 创建sigaction结构体
	struct sigaction act;

	// 指定信号处理函数
	act.sa_sigaction = signalDeal;
	
	// 清空信号集中的信号
	sigemptyset(&act.sa_mask);

	// 信号附带的参数可以被传递到处理函数中
	act.sa_flags = SA_SIGINFO;

	// 指定SIGINT处理函数
	sigaction(SIGINT, &act, NULL);

	// 制定SIGQUIT处理函数
	sigaction(SIGQUIT, &act, NULL);

	while(1){
		
	}

	return 0;
}
